/**
*
*/
package de.yaams.extensions.rgssproject.map.nevent.command;
import java.util.Arrays;
import org.jruby.RubyArray;
import org.jruby.RubyObject;
import org.jruby.RubyString;
import de.yaams.extensions.rgssproject.RGSSProjectHelper;
import de.yaams.extensions.rgssproject.database.form.RubyForm;
import de.yaams.extensions.rgssproject.map.nevent.YEventCommandList;
import de.yaams.extensions.rgssproject.map.nevent.core.EventCode;
import de.yaams.extensions.rgssproject.map.nevent.core.MultipleEventCommand;
import de.yaams.maker.helper.JavaHelper;
import de.yaams.maker.helper.gui.form.FormElement;
import de.yaams.maker.helper.gui.form.FormElementChangeListener;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.gui.form.core.FormHeader;
import de.yaams.maker.helper.language.I18N;
/**
* @author abby
*
*/
public class ChoiceCommand extends MultipleEventCommand {
/**
* @param startID
* @param endID
* @param middle
*/
public ChoiceCommand() {
super(102, 404, 402, 403);
beta = true;
}
/*
* (non-Javadoc)
*
* @see
* de.yaams.extensions.rgssproject.map.nevent.core.MultipleEventCommand#
* getInternEventTitle
* (de.yaams.extensions.rgssproject.map.nevent.core.EventCode)
*/
@Override
protected String getInternEventTitle(EventCode e) {
if (e.getId() == startID) {
// check parameter
RubyArray ra = (RubyArray) e.getParameters().get(0);
// build it
return I18N.t("Auswahl: {0}", Arrays.toString(ra.toArray()));
}
// bestimmte auswahl?
if (e.getId() == middleIDs.get(0)) {
return I18N.t("Auswahl: {0}", e.getParameters().get(1));
}
// bestimmte auswahl?
if (e.getId() == middleIDs.get(1)) {
return I18N.t("Auswahl: Abbruch");
}
return "?";
}
/*
* (non-Javadoc)
*
* @see de.yaams.extensions.rgssproject.map.nevent.core.EventCommand#
* getStartParameter()
*/
@Override
protected void createNewM(YEventCommandList yecl, int indent) {
// end
addEventCode(yecl, endID, indent, "");
// new
addEventCodeNew(yecl, indent);
// second
addEventCode(yecl, middleIDs.get(0), indent, "1,\"No\"");
// new
addEventCodeNew(yecl, indent);
// first
addEventCode(yecl, middleIDs.get(0), indent, "0,\"Yes\"");
// if
addEventCode(yecl, startID, indent, "[\"Yes\",\"No\",\"\",\"\"],0");
}
/*
* (non-Javadoc)
*
* @see
* de.yaams.extensions.rgssproject.map.nevent.core.EventCommand#getIcon()
*/
@Override
public String getIcon() {
return "cards";
}
/*
* (non-Javadoc)
*
* @see
* de.yaams.extensions.rgssproject.map.nevent.core.EventCommand#getIcon(
* de.yaams.extensions.rgssproject.map.nevent.core.EventCode)
*/
@Override
public Object getIcon(EventCode e) {
// what kind?
if (e.getId() == endID) {
return "card_ok";
}
if (e.getId() == startID) {
return getIcon();
}
return "card";
}
/*
* (non-Javadoc)
*
* @see
* de.yaams.extensions.rgssproject.map.nevent.core.EventCommand#getName()
*/
@Override
public String getName() {
return I18N.t("Message Choice");
}
/*
* (non-Javadoc)
*
* @see
* de.yaams.extensions.rgssproject.map.nevent.core.EventCommand#getGroup()
*/
@Override
public String getGroup() {
return "Basics";
}
/*
* (non-Javadoc)
*
* @see
* de.yaams.extensions.rgssproject.map.nevent.core.EventCommand#buildPanel
* (de.yaams.maker.helper.gui.form.core.FormBuilder,
* de.yaams.extensions.rgssproject.map.nevent.core.EventCode)
*/
@Override
public void buildPanel(FormBuilder f, final EventCode eA) {
// select it
EventCode e = null;
try {
e = getStartTag(eA);
} catch (Exception e1) {
return;
}
// add type
f.addElement(
"basic.esc",
RubyForm.getComboBoxNum(I18N.t("Auswahl bei Abbruch"), JavaHelper.numAry(5),
new String[] { "Verboten", "Antwort 1", "Antwort 2", "Antwort 3", "Antwort 4", "Eigene Behandlung" }, e.getParameters(), 1)
.addChangeListener(new FormElementChangeListener() {
@Override
public void stateChanged(FormElement form) {
if (form.getContentAsString().equals("5")) {
// add cancel
addTag(eA, new EventCode(ChoiceCommand.this, (RubyObject) RGSSProjectHelper.getInterpreter(eA.getYecl().getProject())
.runScriptlet("return RPG::EventCommand.new(403," + eA.getIndent() + ",[5])"), eA.getYecl()), endID, 0);
} else {
removeTag(eA, 403, 0);
}
}
}));
// check parameter
RubyArray ra = (RubyArray) e.getParameters().get(0);
if (ra.size() < 4) {
for (int i = ra.size() + 1; i <= 4; i++) {
ra.add(RubyString.newEmptyString(RGSSProjectHelper.getInterpreter(e.getYecl().getProject()).getRuntime()));
}
}
// add textbodes
f.addHeader("text", new FormHeader(I18N.t("Antworten"), "card").setColumn(4));
for (int i = 0; i < 4; i++) {
f.addElement("text." + i, RubyForm.getStringFromAry(I18N.t("Antwort {0}", i + 1), ra, i));
}
}
}